WSL:在 Windows 下搭建完整的 Linux 开发环境
1. 安装 WSL
Windows 子系统 (WSL) 允许开发人员在 Windows 计算机上运行 Linux 发行版,如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等。通过 WSL,用户可以直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具,而无需虚拟机或双启动设置。
启用 WSL:
# 启用适用于 Linux 的 Windows 子系统
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 启用虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 将 WSL 2 设置为默认版本
wsl --set-default-version 2
可以通过运行 wsl --list --online 来查找可用的分发版,为了方便,以及 AUR 确实很吸引人,所以我选用 Arch Linux 进行安装:
wsl --install -d archlinux --no-launch
同时一些其他的安装选项:
--web-download:从联机源安装,而不是使用 Microsoft Store(适宜没有魔法的网络环境);--location:指定要将 WSL 分发版安装到哪个文件夹。
配置镜像网络模式,新建文件.wslconfig到用户目录:
[wsl2]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
2. 配置 WSL
2.1 新建 wheel 用户
使用 WSL 安装 Linux 发行版的过程完成后,运行 wsl 命令以启动你安装的 WSL 实例,目前,Arch Linux 发行版会默认以 root 身份进入系统,我们先更新系统并安装所需工具:
pacman -Syu
pacman -S zsh sudo nano
为了确保安全,我们这里将开始配置一个 wheel 组的普通用户:
useradd -m -G wheel -s /usr/bin/zsh <username>
后文中的
<username>将全部被 camelliatse 代替
注意到我们这里添加的用户没有设定密码,如果 sudo 要求输入密码,将无法完成。因此我们需要让 wheel 组的成员执行 sudo 时无需输入密码。执行:
visudo
找到下面这行(默认被注释):
# %wheel ALL=(ALL) NOPASSWD: ALL
将其取消注释并保存即可:
%wheel ALL=(ALL) NOPASSWD: ALL
为了让每次启动 Arch 都自动以 camelliatse 登录,输入exit退出登录,在 Windows 的 PowerShell(管理员权限可选) 中执行:
wsl --manage archlinux --set-default-user camelliatse
2.2 系统基础配置
重新运行wsl以回到 Arch Linux 中
2.2.1 关闭环境变量继承和启用systemd
编辑 /etc/wsl.conf:
[interop]
appendWindowsPath = false
[boot]
systemd = true
2.2.2 更新系统并安装常用工具
sudo pacman -Syyu
sudo pacman -S --needed base-devel git curl wget vim mise
base-devel提供编译工具链(gcc、make 等),是许多 AUR 包的基础。
2.2.3 设置 Locale(支持中文)
编辑 /etc/locale.gen,取消注释你需要的语言环境(例如中文 zh_CN.UTF-8 和英文 en_US.UTF-8):
sudo vim /etc/locale.gen
找到并取消注释:
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
然后执行:
sudo locale-gen
设置系统默认语言(可选,推荐保留英文,终端兼容性更好):
echo 'LANG=en_US.UTF-8' | sudo tee /etc/locale.conf
2.2.4 设置时区
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2.2.5 自动配置镜像
sudo pacman -S reflector
sudo reflector --country China --protocol https --sort rate --save /etc/pacman.d/mirrorlist
2.3 系统开发环境配置
2.3.1 安装 mise
sudo pacman -S mise
2.3.2 使用 mise 管理版本
mise use -g node@lts
mise use -g pnpm@latest
mise use -g python@3.12
之后可在项目目录中通过 mise use 切换特定版本,实现环境隔离。